'use strict'

const common = require('./common.js')

function 等待指定界面出现() {
    // NOTE: 应用启动后主界面加载时间是不确定的，导致接下去的exists判断可能为false. 使用异步编程解决该问题rxjs
    // 1. 如果是主界面，查找实时公交按钮，点击
    let mainPage = className("android.view.View").depth(22).text("实时公交")
    if (mainPage.exists()) {
        common.speak("进入软件主界面");
        bounds = mainPage.findOne().bounds()
        click(bounds.centerX(), bounds.centerY())
    }

    // 2. 实时公交界面
    // let secondPage = className("android.view.View").depth(25).text("开往 宜家家居")
    // if (secondPage.exists()) {
    //     common.speak("进入二级界面")
    //     bounds = secondPage.findOne().bounds()
    //     click(bounds.centerX(), bounds.centerY())
    // }
    let selector = className("android.view.ViewGroup").depth(22).desc("搜索线路、站点")
    common.clickBounds(selector)
    let item = className("android.view.View").depth(22).text('开往 宜家家居')
    common.clickBounds(item)


    // 3. 如果就是想要的最终界面
    let msg = findByText()
    if (msg != '') {
        return true
    }
    return false
}

function startApp() {
    common.unlock()
    // TODO：有概率打不开，需要用元素定位方法打开应用
    let ret = app.launchApp("高德地图")
    console.log("打开高德地图: ", ret)

    let i = 0;
    console.log("in");
    while (!等待指定界面出现()) {
        i++
        console.log("未找到指定界面-", i)
        sleep(1000)
    }
    console.log("out");
    // common.startMIUIApp("高德地图", 1)
    const regex = '(\\d+)分钟';
    let id = setInterval(function () {
        common.unlock()
        let msg = findByText()
        let match
        if (match = msg.match(regex)) {
            let remaidTime = parseInt(match[1])
            if (remaidTime < 3) {
                clearInterval(id)
                engines.myEngine().forceStop()
                // 退出脚本，关闭应用, 系统音量调为50%
            }
            if (remaidTime < 5) {
                common.speak("主人!还有不到5分钟的时间哦,快来不及了，现在必须得出发了")
            }
        }
    }, 60 * 1000)
}


function findByText() {
    let item = className("android.view.View").depth(32).findOne(2000)
    if (item) {
        console.log(item.text())
        let str = "109B公交车:" + item.text()
        common.speak(str)
        return item.text()
    }
    return ''
}


if (common.isWorkDay()) {
    // startApp()
}
